// 运行时配置

import type { RequestConfig } from '@umijs/max';

export const request: RequestConfig = {
  timeout: 10000,
  // other axios options you want
  // errorConfig: {
  //   errorHandler(err: any) {},
  //   errorThrower(res: any) {
  //     console.log('errorThrower', res);

  //     // throw new Error('错误');
  //   },
  // },
  // 请求拦截
  requestInterceptors: [
    // 直接写一个 function，作为拦截器
    // 请求拦截最常见的就是添加token
    // 也可以去为特定的请求做特定的请求头的设置
    (url: string, options: any) => {
      // do something
      // console.log('url', url);
      // console.log('options', options);

      options.headers.token = '123456';

      // if (url === "/upload") {
      //   options.headers.Accept = "formData"
      // }

      return { url, options };
    },
  ],
  // 相应拦截
  responseInterceptors: [
    (response: any) => {
      // 不再需要异步处理读取返回体内容，可直接在data中读出，部分字段可在 config 中找到
      // const { data = {} as any, config } = response;
      // do something

      // 相应拦截里面最常做的是根据请求的状态码或者业务的状态码做统一的处理
      // console.log(response);
      if (response.state === '500') {
        alert('服务端错误');
      }

      if (response.data.status === '1001') {
        alert('参数错误');
      }

      // response.data = response.result;
      return response;
    },
  ],
};

// 全局初始化数据配置，用于 Layout 用户信息和权限初始化
// 更多信息见文档：https://umijs.org/docs/api/runtime-config#getinitialstate
export async function getInitialState(): Promise<{ name: string }> {
  return { name: '@umijs/max' };
}

export const layout = () => {
  return {
    logo: 'https://img.alicdn.com/tfs/TB1YHEpwUT1gK0jSZFhXXaAtVXa-28-27.svg',
    menu: {
      locale: false,
    },
    logout: () => {
      console.log('退出成功');
    },
  };
};
